iT邦幫忙

2024 iThome 鐵人賽

DAY 1
0

MQTT簡介

MQTT 全稱 Message Queuing Telemetry Transport ,是一種輕量級的通訊協議,特色在於耗能低、佔用的頻寬小、不需消耗很多資源,且程式碼簡單,封包精簡,因為上述的特性及各種優勢,經常被應用於需要低耗能的物聯網上。

MQTT的運作模式

MQTT是採用發佈(Publish)和訂閱(Subscribe)模式,發佈者(Publisher)會發送一個主題到伺服器(MQTT Broker),訂閱者(Subscriber)可以選擇要訂閱什麼主題,並由伺服器發送主題給訂閱者。
MQTT運作方式

Python實作(利用Paho MQTT套件)

安裝Paho MQTT

在終端機中輸入以下指令

pip install paho-mqtt

可利用下列指令確認是否有安裝成功

pip list | grep paho-mqtt

連線到MQTT Broker server

以下是可供選擇的公開 MQTT Borker 伺服器

broker.emqx.io:1883
broker.hivemq.com:1883
test.mosquitto.org:1883
mqtt.eclipse.org:1883

在這裡我們使用公開的免費伺服器 broker.emqx.io, Port:1883

#導入paho-mqtt套件
import paho.mqtt.client as mqtt 

#定義連線到MQTT Broker伺服器的函式
def connect_MQTT_broker(broker_host, port):
    #定義回呼函式(Callback function),當客戶端在連線後會自動呼叫這個函式
    def on_connect(client, userdata, flags, rc): 
        if (rc == 0): #rc是連線結果的代碼,0表示連線成功
            print("連線成功")
        else:
            print(f'連線失敗, 錯誤代碼={rc}')

    client = mqtt.Client() #建立MQTT客戶端的實例
    #將回呼函數指定到client這個實例的on_connect的屬性上,使客戶端連線時會自動呼叫該函數
    client.on_connect = on_connect 
    #連線到Broker伺服器 .connect(host, port)
    client.connect(broker_host, port)
    #保持伺服器連線
    client.loop_start()
    #返回客戶端實例
    return client

#將返回的客戶端實例指定到iron_client
iron_client = connect_MQTT_broker("broker.emqx.io", 1883)

運行結果

連線成功

若連線成功則會輸出"連線成功",歡迎各位讀者嘗試實作看看喔!

下一篇將教大家實作發佈主題!
圖片來源:https://swf.com.tw/?p=1002


下一篇
[DAY2]使用Python實作MQTT(二)
系列文
讓Python不拍勝-實用套件實作與介紹30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
arguskao
iT邦新手 3 級 ‧ 2024-09-10 08:31:20

有破圖呦

好的!
感謝提醒

我要留言

立即登入留言